package com.luo.gmall.ums.api;

import com.luo.gmall.common.bean.ResponseVo;
import com.luo.gmall.ums.entity.UserAddressEntity;
import com.luo.gmall.ums.entity.UserEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * @author Zoro
 * @date 2021年11月19
 */
public interface GmallUmsApi {



    /**
     * 7.根据用户id查询用户
     */
    @GetMapping("ums/user/get/{userId}")
    ResponseVo<UserEntity> queryUserByUserId(@PathVariable("userId") Long userId);

    /**
     * 1.根据用户id查询用户的收获地址列表
     */
    @GetMapping("ums/useraddress/list/{userId}")
    ResponseVo<List<UserAddressEntity>> queryAddressesByUserId(@PathVariable("userId") Long userId);


    /**
     * 查询功能，根据参数中的登录名（用户名/手机号/邮箱）和密码查询指定用户
     */
    @GetMapping("ums/user/query")
    ResponseVo<UserEntity> queryUser(@RequestParam String loginName, @RequestParam String password);

    /**
     * 实现用户注册功能，需要对用户密码进行加密存储，使用MD5加密，
     * 加密过程中使用随机码作为salt加盐。另外还需要对用户输入的短信验证码进行校验。
     */
    @PostMapping("ums/user/register")
    void register(UserEntity userEntity, @RequestParam("code") String code);


    /**
     * 根据用户输入的手机号，生成随机验证码，长度为6位，纯数字。并且调用短信服务，
     * 发送验证码到用户手机。
     * 异步发送短信
     */
    @PostMapping("ums/user/code")
    void sendCode(@RequestParam("phone") String phone);


    /**
     * 实现用户数据的校验，主要包括对：手机号、用户名的唯一性校验。
     */
    @GetMapping("ums/user/check/{data}/{type}")
    ResponseVo<Boolean> dataCheck(@PathVariable("data") String data, @PathVariable("type") Integer type);


}
